import java.util.*;
/*给你一个整数数组 nums 和一个整数 k ，请你统计并返回 该数组中和为 k 的子数组的个数 。
子数组是数组中元素的连续非空序列。
输入：nums = [1,1,1], k = 2
输出：2*/
public class Text {
    public static int check(int[] nums, int k) {
        int count = 0;
        int n = nums.length;
        int[] arr = new int[n + 1];
        for (int i = 0; i < n; i++) {
            arr[i + 1] = arr[i] + nums[i];
        }
        Map<Integer, Integer> map = new HashMap<>(n + 1); // 避免溢出
        for (int s : arr) {
            // 通过减去前缀和来确定是否包含和为k的子数组，存在加，不存在0
            count += map.getOrDefault(s - k, 0);
            map.merge(s, 1, Integer::sum);
        }
        return count;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = sc.nextInt();
        }
        int k = sc.nextInt();
        int result = check(nums, k);
        System.out.println(result);
    }
}